package main

import (
	"fmt"
	"log"

	"downloader/internal/core"
	"downloader/internal/downloader"
)

func main() {
	//go run main.go download https://example.com/file.zip --threads 8 --output-dir ./downloads
	// 示例1：使用默认配置下载文件
	dl := core.NewDownloader(nil)

	// 下载 HTTP 文件
	if err := dl.Download("https://example.com/file.zip"); err != nil {
		log.Printf("下载失败: %v\n", err)
	}

	// 下载 FTP 文件
	if err := dl.Download("ftp://example.com/file.zip"); err != nil {
		log.Printf("下载失败: %v\n", err)
	}

	// 下载磁力链接
	if err := dl.Download("magnet:?xt=urn:btih:example"); err != nil {
		log.Printf("下载失败: %v\n", err)
	}

	// 示例2：使用自定义配置下载文件
	customConfig := &downloader.Config{
		MaxThreads: 8,
		OutputDir:  "./",
		SpeedLimit: "1MB/s",
	}
	dl = core.NewDownloader(customConfig)

	// 尝试下载不支持的协议
	if err := dl.Download("unknown://example.com/file"); err != nil {
		log.Printf("预期的错误: %v\n", err)
	}

	// 示例3：爬取网站
	crawler := core.NewCrawler(nil)
	if err := crawler.Crawl("https://example.com"); err != nil {
		log.Printf("爬取失败: %v\n", err)
	}

	fmt.Println("所有任务完成")
}

func qrTest(url string) {
	// 创建二维码实例
	qr := core.NewQRCode("https://sub1.smallstrawberry.com/api/v1/client/subscribe?token=d8194c6db23d0578c2de259420ea4553", 256)

	// 生成二维码图片文件
	err := qr.Generate("qrcode.png")
	if err != nil {
		fmt.Println("生成二维码失败:", err)
		return
	}

	// 生成Base64编码的二维码
	base64QR, err := qr.GenerateBase64()
	if err != nil {
		fmt.Println("生成Base64二维码失败:", err)
		return
	}
	fmt.Println("Base64二维码:", base64QR)
}
